/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.opt.listecampagne.services.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Transformer;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.opt.listecampagne.builder.DTOCampagneNomListeCampBuilder;
import fr.generali.accueilclient.opt.listecampagne.om.ICampagneNomListeCamp;
import fr.generali.accueilclient.opt.listecampagne.om.IIntermediaireCampagneListeCamp;
import fr.generali.relationclient.marketing.opt.listecampagne.DtoCampagneNom;
import fr.generali.relationclient.marketing.opt.listecampagne.DtoIntermediaireCampagne;
import fr.generali.relationclient.marketing.opt.listecampagne.builder.DtoIntermediaireCampagneBuilder;

/**
 * @author Holmes Kelly
 */
@Component("listeCampagneMapper")
public class ListeCampagneMapper {

    /**
     * @param intermediaireCampagne intermediaireCampagne
     * @return DtoIntermediaireCampagne
     */
    public DtoIntermediaireCampagne mapperIntermediaireCampagne2DtoIntermediaireCampagne(
                    IIntermediaireCampagneListeCamp intermediaireCampagne) {

        DtoIntermediaireCampagne dtoIntermediaireCampagne = null;

        if (intermediaireCampagne != null) {

            dtoIntermediaireCampagne =
                            DtoIntermediaireCampagneBuilder.dtoIntermediaireCampagne().buildIdIntermediaire(
                                            intermediaireCampagne.getIdIntermediaire()).build();
        }

        return dtoIntermediaireCampagne;
    }

    /**
     * @param listDtoCampagneNom listDtoCampagneNom
     * @return list ICampagneNom
     */
    public List<ICampagneNomListeCamp> mapperListerCampagneNom2ListICampagneNom(
        List<DtoCampagneNom> listDtoCampagneNom) {

        List<ICampagneNomListeCamp> listeCampagneNomListeCamps = null;

        if (CollectionUtils.isNotEmpty(listDtoCampagneNom)) {

            listeCampagneNomListeCamps = new ArrayList<ICampagneNomListeCamp>();

            CollectionUtils.collect(listDtoCampagneNom, getTransformerDtoCampagneNom2ICampagneNomListeCamp(),
                            listeCampagneNomListeCamps);
        }

        return listeCampagneNomListeCamps;
    }

    /**
     * @return transformer DtoCampagneNom -> ICampagneNomListeCamp
     */
    private Transformer getTransformerDtoCampagneNom2ICampagneNomListeCamp() {

        Transformer transformer = new Transformer() {

            public Object transform(Object input) {

                DtoCampagneNom dtoCampagneNom = DtoCampagneNom.class.cast(input);

                ICampagneNomListeCamp campagneNomListeCamp = DTOCampagneNomListeCampBuilder.dTOCampagneNomListeCamp()
                                .buildIdentifiant(dtoCampagneNom.getIdentifiant())
                                .buildNom(dtoCampagneNom.getNom())
                                .build();

                return campagneNomListeCamp;
            }
        };

        return transformer;
    }

}
